package system.student.util;

import java.util.regex.Pattern;

public class PasswordValidator {
    // 正则表达式模式：至少1个字母 + 至少1个数字 + 总长度≥1（基础规则）
    // 若需要最小长度限制，可通过方法参数控制（更灵活）
    private static final String BASIC_PATTERN =
            "^(?=.*[A-Za-z])(?=.*\\d).+$";

    // 编译正则表达式（提高性能）
    private static final Pattern PATTERN = Pattern.compile(BASIC_PATTERN);

    /**
     * 验证密码是否符合要求（默认最小长度6位）
     * @param password 待验证的密码（允许为 null）
     * @return 符合要求返回 true，否则返回 false
     */
    public static boolean isValid(String password) {
        return isValid(password, 2); // 默认最小长度2位
    }

    /**
     * 验证密码是否符合要求（自定义最小长度）
     * @param password 待验证的密码（允许为 null）
     * @param minLength 密码最小长度（需≥1）
     * @return 符合要求返回 true，否则返回 false
     */
    public static boolean isValid(String password, int minLength) {
        // 处理空值或长度不足
        if (password == null || password.length() < minLength) {
            return false;
        }
        // 正则匹配：同时包含字母和数字
        return PATTERN.matcher(password).matches();
    }

}
